package com.gitee.cirnochat.websocket.service;

import com.gitee.cirnochat.websocket.model.dto.WebSocketBroadCastMessage;
import com.gitee.cirnochat.websocket.model.dto.WebSocketUserMessage;

public interface WebSocketService {

    /**
     * 向用户的所有在线设备发送系统消息
     * @param message 系统消息内容 {@link WebSocketUserMessage}
     */
    void sendMessageToOnlineDevices(WebSocketUserMessage message);

    /**
     * 向用户的所有在线设备发送系统消息，排除当前节点
     * @param message 系统消息内容 {@link WebSocketUserMessage}
     */
    void sendMessageToOnlineDevicesExcludeCurrent(WebSocketUserMessage message);

    /**
     * 向指定用户发送消息
     * @param message 用户消息内容 {@link WebSocketUserMessage}
     */
    void sendMessageToUser(WebSocketUserMessage message);

    /**
     * 向所有用户发送广播消息
     * @param message 广播消息内容 {@link WebSocketBroadCastMessage}
     */
    void sendMessageToAll(WebSocketBroadCastMessage message);
}
